package com.wonders.hisdoctor.station.project.base.domain;

import com.wonders.his.common.config.jackson.DateFormat;
import com.wonders.his.common.utils.validator.group.PrimaryGroup;
import java.math.BigDecimal;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * <p>就诊记录</p>
 * <p>db_table: CLINIC_MASTER</p>
 * @author tong-aj
 * @date 2021/02/26
 */
@ApiModel("就诊记录")
@Accessors(chain = true)
@Data
@ToString
@TableName("CLINIC_MASTER")
public class ClinicMaster implements Serializable {

    private static final long serialVersionUID = 8675377955865267457L;

    /** `主键` db_field: VISIT_DATE; desc: 就诊日期：非空 */
    @ApiModelProperty("就诊日期：非空")
    @NotNull(message = "就诊日期：非空不能为空", groups = PrimaryGroup.class)
    @TableField("VISIT_DATE")
    @DateFormat(pattern = "yyyy/MM/dd")
    private Date visitDate;

    /** `主键` db_field: VISIT_NO; desc: 就诊序号：非空，每天从1开始递增，为病人每次挂号分配一个序号，该序号与就诊日期一起，构成一次就诊的唯一标识 */
    @ApiModelProperty("就诊序号：非空，每天从1开始递增，为病人每次挂号分配一个序号，该序号与就诊日期一起，构成一次就诊的唯一标识")
    @NotNull(message = "就诊序号：非空，每天从1开始递增，为病人每次挂号分配一个序号，该序号与就诊日期一起，构成一次就诊的唯一标识不能为空", groups = PrimaryGroup.class)
    @TableField("VISIT_NO")
    private Integer visitNo;

    /** db_field: CLINIC_LABEL; desc: 号别：对应门诊号表主记录定义的号别 */
    @ApiModelProperty("号别：对应门诊号表主记录定义的号别")
    @TableField("CLINIC_LABEL")
    private String clinicLabel;

    /** db_field: VISIT_TIME_DESC; desc: 就诊时间描述：同号表门诊时间描述 */
    @ApiModelProperty("就诊时间描述：同号表门诊时间描述")
    @TableField("VISIT_TIME_DESC")
    private String visitTimeDesc;

    /** db_field: SERIAL_NO; desc: 号码：一个号别下的序号 */
    @ApiModelProperty("号码：一个号别下的序号")
    @TableField("SERIAL_NO")
    private Integer serialNo;

    /** `主键` db_field: PATIENT_ID; desc: 病人标识 号：对已建立主索引的病人使用，对无主索引的病人为空 */
    @ApiModelProperty("病人标识 号：对已建立主索引的病人使用，对无主索引的病人为空")
    @NotNull(message = "病人标识 号：对已建立主索引的病人使用，对无主索引的病人为空不能为空", groups = PrimaryGroup.class)
    @TableField("PATIENT_ID")
    private String patientId;

    /** db_field: NAME; desc: 姓名：病人姓名 */
    @ApiModelProperty("姓名：病人姓名")
    @TableField("NAME")
    private String name;

    /** db_field: NAME_PHONETIC; desc: 姓名拼音：病人姓名拼音，大写，字间用一个空格分隔，超长截断 */
    @ApiModelProperty("姓名拼音：病人姓名拼音，大写，字间用一个空格分隔，超长截断")
    @TableField("NAME_PHONETIC")
    private String namePhonetic;

    /** db_field: SEX; desc: 性别：使用规范描述，见1.1性别字典 */
    @ApiModelProperty("性别：使用规范描述，见1.1性别字典")
    @TableField("SEX")
    private String sex;

    /** db_field: AGE; desc: 年龄 */
    @ApiModelProperty("年龄")
    @TableField("AGE")
    private Integer age;

    /** db_field: IDENTITY; desc: 身份：使用规范名称，用户定义，见1.6身份字典 */
    @ApiModelProperty("身份：使用规范名称，用户定义，见1.6身份字典")
    @TableField("IDENTITY")
    private String identity;

    /** db_field: CHARGE_TYPE; desc: 费别：使用规范名称，用户定义，见1.9费别字典 */
    @ApiModelProperty("费别：使用规范名称，用户定义，见1.9费别字典")
    @TableField("CHARGE_TYPE")
    private String chargeType;

    /** db_field: INSURANCE_TYPE; desc: 医保类别：如果此病人为医保病人，则记录反映本次住院支付方案的医保类别 */
    @ApiModelProperty("医保类别：如果此病人为医保病人，则记录反映本次住院支付方案的医保类别")
    @TableField("INSURANCE_TYPE")
    private String insuranceType;

    /** db_field: INSURANCE_NO; desc: 医疗保险号：如果此病人为医保病人，则记录其保险号 */
    @ApiModelProperty("医疗保险号：如果此病人为医保病人，则记录其保险号")
    @TableField("INSURANCE_NO")
    private String insuranceNo;

    /** db_field: UNIT_IN_CONTRACT; desc: 合同单位：也称体系单位，使用代码，用户定义，见2.4合同单位记录 */
    @ApiModelProperty("合同单位：也称体系单位，使用代码，用户定义，见2.4合同单位记录")
    @TableField("UNIT_IN_CONTRACT")
    private String unitInContract;

    /** db_field: CLINIC_TYPE; desc: 号类：标识该门诊的挂号费等级，如：普通、专家等，见3.5门诊号类别字典 */
    @ApiModelProperty("号类：标识该门诊的挂号费等级，如：普通、专家等，见3.5门诊号类别字典")
    @TableField("CLINIC_TYPE")
    private String clinicType;

    /** db_field: FIRST_VISIT_INDICATOR; desc: 初诊标志：1-初诊 0-复诊 */
    @ApiModelProperty("初诊标志：1-初诊 0-复诊")
    @TableField("FIRST_VISIT_INDICATOR")
    private Integer firstVisitIndicator;

    /** db_field: VISIT_DEPT; desc: 就诊科室：科室代码，用户定义，见2.6科室字典 */
    @ApiModelProperty("就诊科室：科室代码，用户定义，见2.6科室字典")
    @TableField("VISIT_DEPT")
    private String visitDept;

    /** db_field: VISIT_SPECIAL_CLINIC; desc: 就诊专科：指就诊科室下所设的某一专科，可空 */
    @ApiModelProperty("就诊专科：指就诊科室下所设的某一专科，可空")
    @TableField("VISIT_SPECIAL_CLINIC")
    private String visitSpecialClinic;

    /** db_field: DOCTOR; desc: 医生：在就诊专家门诊时，为专家姓名，可空 */
    @ApiModelProperty("医生：在就诊专家门诊时，为专家姓名，可空")
    @TableField("DOCTOR")
    private String doctor;

    /** db_field: MR_PROVIDE_INDICATOR; desc: MR_PROVIDE_INDICATOR */
    @ApiModelProperty("MR_PROVIDE_INDICATOR")
    @TableField("MR_PROVIDE_INDICATOR")
    private Integer mrProvideIndicator;

    /** db_field: REGISTRATION_STATUS; desc: 挂号状态：反映从预约到就诊的状态变化。0-预约 1-已确认（已取号） 2-就诊 */
    @ApiModelProperty("挂号状态：反映从预约到就诊的状态变化。0-预约 1-已确认（已取号） 2-就诊")
    @TableField("REGISTRATION_STATUS")
    private Integer registrationStatus;

    /** db_field: REGISTERING_DATE; desc: 挂号日期：发生预约或挂号的日期 */
    @ApiModelProperty("挂号日期：发生预约或挂号的日期")
    @TableField("REGISTERING_DATE")
    private Date registeringDate;

    /** db_field: SYMPTOM; desc: 症状 */
    @ApiModelProperty("症状")
    @TableField("SYMPTOM")
    private String symptom;

    /** db_field: REGIST_FEE; desc: 挂号费 */
    @ApiModelProperty("挂号费")
    @TableField("REGIST_FEE")
    private BigDecimal registFee;

    /** db_field: CLINIC_FEE; desc: 诊疗费 */
    @ApiModelProperty("诊疗费")
    @TableField("CLINIC_FEE")
    private BigDecimal clinicFee;

    /** db_field: OTHER_FEE; desc: 其它费 */
    @ApiModelProperty("其它费")
    @TableField("OTHER_FEE")
    private BigDecimal otherFee;

    /** db_field: OPERATOR; desc: 挂号员 */
    @ApiModelProperty("挂号员")
    @TableField("OPERATOR")
    private String operator;

    /** db_field: RETURNED_DATE; desc: 退号日期：发生退号时使用 */
    @ApiModelProperty("退号日期：发生退号时使用")
    @TableField("RETURNED_DATE")
    private Date returnedDate;

    /** db_field: RETURNED_OPERATOR; desc: 退号挂号员：发生退号时使用 */
    @ApiModelProperty("退号挂号员：发生退号时使用")
    @TableField("RETURNED_OPERATOR")
    private String returnedOperator;

    /** db_field: CLINIC_CHARGE; desc: 门诊费用 */
    @ApiModelProperty("门诊费用")
    @TableField("CLINIC_CHARGE")
    private BigDecimal clinicCharge;

    /** db_field: INTERNAL_NO; desc: 内部处理号 */
    @ApiModelProperty("内部处理号")
    @TableField("INTERNAL_NO")
    private String internalNo;

    /** db_field: IDENTITY_CLASS; desc: 身份类别 */
    @ApiModelProperty("身份类别")
    @TableField("IDENTITY_CLASS")
    private String identityClass;

    /** db_field: REGISTRATION_SOURCE; desc: 挂号来源 */
    @ApiModelProperty("挂号来源")
    @TableField("REGISTRATION_SOURCE")
    private String registrationSource;

    /** db_field: OUTP_RCPT_NO; desc: 门诊收据号 */
    @ApiModelProperty("门诊收据号")
    @TableField("OUTP_RCPT_NO")
    private String outpRcptNo;

    /** db_field: NAMED_INDICATOR; desc: 指定（命名）标志 */
    @ApiModelProperty("指定（命名）标志")
    @TableField("NAMED_INDICATOR")
    private Integer namedIndicator;

    /** db_field: CLINIC_SCHEDULE_TIME; desc: 门诊时间表 */
    @ApiModelProperty("门诊时间表")
    @TableField("CLINIC_SCHEDULE_TIME")
    private String clinicScheduleTime;

    /** db_field: UNTRANSFERING_INDICATOR; desc: UNTRANSFERING_INDICATOR */
    @ApiModelProperty("UNTRANSFERING_INDICATOR")
    @TableField("UNTRANSFERING_INDICATOR")
    private Integer untransferingIndicator;

    /** db_field: RETURNED_CAUSE; desc: 退号原因 */
    @ApiModelProperty("退号原因")
    @TableField("RETURNED_CAUSE")
    private String returnedCause;

    /** db_field: AGENCY_NAME; desc: 代办人名称 */
    @ApiModelProperty("代办人名称")
    @TableField("AGENCY_NAME")
    private String agencyName;

    /** db_field: AGENCY_RELATIONSHIP; desc: 代办人关系 */
    @ApiModelProperty("代办人关系")
    @TableField("AGENCY_RELATIONSHIP")
    private String agencyRelationship;

    /** db_field: AGENCY_ID_NO; desc: 代办人证件号码 */
    @ApiModelProperty("代办人证件号码")
    @TableField("AGENCY_ID_NO")
    private String agencyIdNo;

}